package com.cvr.project.utils;
import android.util.Log;

import com.cvr.project.api.ApiService;
import java.net.Proxy;
import java.util.concurrent.TimeUnit;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

/**
 * _ooOoo_
 * o8888888o
 * 88" . "88
 * (| -_- |)
 * O\ = /O
 * ____/`---'\____
 * .   ' \\| |// `.
 * / \\||| : |||// \
 * / _||||| -:- |||||- \
 * | | \\\ - /// | |
 * | \_| ''\---/'' | |
 * \ .-\__ `-` ___/-. /
 * ___`. .' /--.--\ `. . __
 * ."" '< `.___\_<|>_/___.' >'"".
 * | | : `- \`.;`\ _ /`;.`/ - ` : | |
 * \ \ `-. \_ __\ /__ _/ .-` / /
 * ======`-.____`-.___\_____/___.-`____.-'======
 * `=---='
 * .............................................
 * 佛祖保佑             永无BUG
 *
 * @author :created by master
 * time :2021年7月6日17:07:17
 * 描述：retrofit工具类
 */
public class RetrofitUtils {

    //封装Retrofit  设置拦截器
    static Retrofit createRetofiter() {
        return new Retrofit.Builder()
                .baseUrl(DomainManager.getStaticBaseUrl())
                .client(new OkHttpClient.Builder().proxy(Proxy.NO_PROXY).connectTimeout(15, TimeUnit.SECONDS).readTimeout(15, TimeUnit.SECONDS).build())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .client(new OkHttpClient.Builder().addInterceptor(chain -> {
                            Request request = chain.request().newBuilder().build();
                            try {
                                Response response = chain.proceed(request);
                                byte[] resp = response.body().bytes();
                                    String stringBuffer = " \n================================================================================================网络请求开始========================================================================================================\n" +
                                            "===============================方式---" + request.method() + "\n" +
                                            "===============================请求---" + request.url() + "\n" +
                                            "===============================响应---" + new String(resp) + "\n" +
                                            "================================================================================================网络请求结束========================================================================================================\n";
                                    Log.e("网络请求", stringBuffer);
                                return response.newBuilder().body(ResponseBody.create(MediaType.parse(""), new String(resp))).build();
                            } catch (Exception e) {
                                return chain.proceed(request);
                            }
                        })
                                .build()
                ).build();
    }

    public static ApiService instanceApi() {
        return createRetofiter().create(ApiService.class);
    }
}
